TCP Server এবং Client এর উদাহরণ

Computer Programming - ইউনিক্স সকেট (Unix Socket) TCP Socket Programming (TCP Socket Programming) |
221
221

TCP Server এবং Client-এর উদাহরণ দেখানোর জন্য আমরা C ভাষায় একটি সহজ প্রোগ্রাম তৈরি করবো, যেখানে সার্ভার একটি নির্দিষ্ট পোর্টে অপেক্ষা করবে এবং ক্লায়েন্ট সেই পোর্টে সংযোগ স্থাপন করে ডেটা পাঠাবে ও গ্রহণ করবে।

TCP Server প্রোগ্রাম উদাহরণ (C ভাষায়)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#define PORT 8080
int main() {
   int server_fd, new_socket;
   struct sockaddr_in address;
   int addrlen = sizeof(address);
   char buffer[1024] = {0};
   char *hello = "Hello from server";
   // 1. Socket তৈরি করা
   if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) {
       perror("Socket creation failed");
       exit(EXIT_FAILURE);
   }
   // 2. সার্ভার ঠিকানা সেটআপ করা
   address.sin_family = AF_INET;
   address.sin_addr.s_addr = INADDR_ANY;
   address.sin_port = htons(PORT);
   // 3. Binding করা
   if (bind(server_fd, (struct sockaddr*)&address, sizeof(address)) < 0) {
       perror("Bind failed");
       exit(EXIT_FAILURE);
   }
   // 4. Listening করা
   if (listen(server_fd, 3) < 0) {
       perror("Listen failed");
       exit(EXIT_FAILURE);
   }
   printf("Server is listening on port %d\n", PORT);
   // 5. Accepting সংযোগ
   if ((new_socket = accept(server_fd, (struct sockaddr*)&address, (socklen_t*)&addrlen)) < 0) {
       perror("Accept failed");
       exit(EXIT_FAILURE);
   }
   // 6. ডেটা গ্রহণ করা
   read(new_socket, buffer, 1024);
   printf("Client: %s\n", buffer);
   // 7. ডেটা পাঠানো
   send(new_socket, hello, strlen(hello), 0);
   printf("Hello message sent to client\n");
   // 8. Socket বন্ধ করা
   close(new_socket);
   close(server_fd);
   return 0;
}


TCP Client প্রোগ্রাম উদাহরণ (C ভাষায়)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#define PORT 8080
int main() {
   int sock = 0;
   struct sockaddr_in serv_addr;
   char *hello = "Hello from client";
   char buffer[1024] = {0};
   // 1. Socket তৈরি করা
   if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
       printf("Socket creation failed\n");
       return -1;
   }
   // 2. সার্ভার ঠিকানা সেটআপ করা
   serv_addr.sin_family = AF_INET;
   serv_addr.sin_port = htons(PORT);
   // 3. IP Address সেট করা
   if (inet_pton(AF_INET, "127.0.0.1", &serv_addr.sin_addr) <= 0) {
       printf("Invalid address or Address not supported\n");
       return -1;
   }
   // 4. সার্ভারের সাথে সংযোগ স্থাপন করা
   if (connect(sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0) {
       printf("Connection Failed\n");
       return -1;
   }
   // 5. ডেটা পাঠানো
   send(sock, hello, strlen(hello), 0);
   printf("Hello message sent to server\n");
   // 6. ডেটা গ্রহণ করা
   read(sock, buffer, 1024);
   printf("Server: %s\n", buffer);
   // 7. Socket বন্ধ করা
   close(sock);
   return 0;
}
প্রোগ্রাম বিশ্লেষণ

সার্ভার প্রোগ্রাম:

Socket তৈরি:

  • socket() ফাংশন ব্যবহার করে TCP প্রোটোকল ব্যবহার করে সার্ভারের জন্য একটি Socket তৈরি করা হয়।

Binding:

  • bind() ফাংশন সার্ভারের Socket-কে নির্দিষ্ট IP Address (INADDR_ANY, যা সমস্ত নেটওয়ার্ক ইন্টারফেস নির্দেশ করে) এবং পোর্ট (8080) এর সাথে সংযুক্ত করে।

Listening:

  • listen() ফাংশন সার্ভারের Socket-কে ইনকামিং সংযোগ গ্রহণের জন্য অপেক্ষমাণ রাখে।

Accepting সংযোগ:

  • accept() ফাংশন একটি ইনকামিং সংযোগ গ্রহণ করে এবং নতুন Socket তৈরি করে, যা ক্লায়েন্টের সাথে ডেটা ট্রান্সফার করতে ব্যবহৃত হয়।

ডেটা গ্রহণ এবং পাঠানো:

  • read() ফাংশন ব্যবহার করে ক্লায়েন্ট থেকে ডেটা গ্রহণ করা হয়, এবং send() ফাংশন ব্যবহার করে ক্লায়েন্টে ডেটা পাঠানো হয়।

Socket বন্ধ করা:

  • close() ফাংশন ব্যবহার করে নতুন Socket এবং সার্ভার Socket বন্ধ করা হয়।

ক্লায়েন্ট প্রোগ্রাম:

Socket তৈরি:

  • socket() ফাংশন ব্যবহার করে TCP প্রোটোকল ব্যবহার করে ক্লায়েন্টের জন্য একটি Socket তৈরি করা হয়।

সার্ভারের ঠিকানা সেটআপ:

  • inet_pton() ফাংশন সার্ভারের IP Address (127.0.0.1, যা localhost নির্দেশ করে) এবং পোর্ট (8080) সেট করে।

সার্ভারের সাথে সংযোগ স্থাপন:

  • connect() ফাংশন ব্যবহার করে ক্লায়েন্ট সার্ভারের সাথে সংযোগ স্থাপন করে।

ডেটা পাঠানো এবং গ্রহণ:

  • send() ফাংশন ব্যবহার করে সার্ভারে ডেটা পাঠানো হয় এবং read() ফাংশন ব্যবহার করে সার্ভার থেকে ডেটা গ্রহণ করা হয়।

Socket বন্ধ করা:

  • close() ফাংশন ব্যবহার করে ক্লায়েন্টের Socket বন্ধ করা হয়।

কিভাবে এই প্রোগ্রামগুলো চালাবেন

প্রথমে সার্ভার প্রোগ্রাম চালু করুন:

  • সার্ভার একটি নির্দিষ্ট পোর্ট (এখানে 8080) এ ইনকামিং সংযোগের জন্য অপেক্ষা করবে।

এরপর ক্লায়েন্ট প্রোগ্রাম চালু করুন:

  • ক্লায়েন্ট প্রোগ্রাম সার্ভারের সাথে সংযোগ স্থাপন করবে এবং একটি বার্তা পাঠাবে।

ক্লায়েন্ট এবং সার্ভারের মধ্যে বার্তা আদান-প্রদান:

  • সার্ভার বার্তাটি গ্রহণ করে ক্লায়েন্টকে একটি বার্তা পাঠাবে। উভয় প্রোগ্রামে বার্তা প্রদর্শিত হবে।
common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion